#ifndef ___fat32_recursos_y_bloqueos_funciones_auxiliares_3

#define ___fat32_recursos_y_bloqueos_funciones_auxiliares_3 1

#include "f32_base.c"
#include "f32_bloq.c"
#include "f32_rec.c"

int fat32_generar_nuevo_bloqueo_para_elemento(unsigned int, unsigned long long, unsigned char);
void fat32_generar_nueva_apertura_para_elemento(unsigned int, unsigned long long, unsigned char);

int fat32_generar_nuevo_bloqueo_para_elemento (unsigned int transaccion, unsigned long long descriptor, unsigned char nivel) {
  int posicion;
  fat32_bloqueo nuevoBloqueo;
  nuevoBloqueo.transaccionBloqueada = transaccion;
  nuevoBloqueo.tipoEvento = 3;
  nuevoBloqueo.datosEvento.archivo.descriptor = descriptor;
  nuevoBloqueo.datosEvento.archivo.nivel = nivel;
  for (posicion = 0; posicion < fat32_cantidad_bloqueos; posicion ++)
    if (!fat32_bloqueos[posicion].tipoEvento) break;
  if (posicion == fat32_cantidad_bloqueos)
    fat32_bloqueos = fb_cambiar_tamano(fat32_bloqueos, sizeof(fat32_bloqueo), ++ fat32_cantidad_bloqueos);
  fat32_bloqueos[posicion] = nuevoBloqueo;
  return posicion + 1;
}

void fat32_generar_nueva_apertura_para_elemento (unsigned int transaccion, unsigned long long descriptor, unsigned char nivel) {
  fat32_acceso_archivo nuevaApertura;
  nuevaApertura.transaccion = transaccion;
  nuevaApertura.descriptor = descriptor;
  nuevaApertura.nivel = nivel;
  fat32_recursos.archivos = fb_cambiar_tamano(fat32_recursos.archivos, sizeof(fat32_acceso_archivo), ++ fat32_recursos.cantArchivos);
  fat32_recursos.archivos[fat32_recursos.cantArchivos - 1] = nuevaApertura;
}

#endif